package Solution.problem081.SearchinRotatedSortedArray2;

/**
 * @program Leetcode
 * @description:
 * @author: lishangsheng
 * @create: 2019/06/15 16:33
 */
public class BetterSolution {
    public boolean search(int[] nums, int target) {
        int left = 0;
        int right = nums.length -1;

        while (left <= right) {
            int mid = left + (right - left) / 2;


            if (nums[mid] == target) {
                return true;
            }

            if (nums[left] == nums[right] && nums[mid] == nums[left]){
                left++;
                continue;
            }

            if (nums[left] <= nums[mid]) {
                if (target < nums[mid] && target >= nums[left]){
                    right = mid -1;
                } else{
                    left = mid + 1;
                }
            } else if (nums[left] > nums[mid]) {
                if (target >= nums[mid] && target <= nums[right]){
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }
        }
        return false;
    }


}
